其他
数据呈现 | 简单易学!用Python最基础的绘图包来做动图
matplotlib
,学好它,日常基本绘图应该不在话下。matplotlib
下如何实现由静态图变为动态图呢?matplotlib
作为一个名牌绘图包,自然也有相应的模块实现这个功能,今天就让我们一起来学习学习吧。函数简介
matplotlib
中 绘制动图的核心函数是matplotlib.animation.FuncAnimation
,其用法为:animation.funcanimation(fig, animate, init_func, frames, fargs,interval, blit)
注:函数官方解释请点击阅读原文。
绘图代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.animation as animation # 导入matplotlib动图模块
# 在notebook上显示动图
%matplotlib qt5
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
# 导入、处理数据
df = pd.read_excel("C:/Users/yeahww/Desktop/index.xlsx") # 路径以文件位置为准,注意斜杠方向
df = df.set_index("year") # 将year设置为索引
x = df.index
y1 = df.city
y2 = df.country
# 绘图
fig, ax = plt.subplots() # 生成子图,相当于fig = plt.figure(),ax = fig.add_subplot()
line, = ax.plot(x, y1, color='g', linestyle = 'dashdot') # 绘制城市居民消费价格指数
line2, = ax.plot(x, y2, color='r',linestyle = 'solid') # 绘制农村居民消费价格指数
ax.set_xticklabels(x,rotation = 45) # 设置坐标标签
def update(num,x,y1,y2,line): # 通过帧数来不断更新新的数值
line.set_data(x[:num+1], y1[:num+1])
line.axes.axis([0, 20, 95, 110])
line2.set_data(x[:num+1], y2[:num+1])
line2.axes.axis([0, 20, 95, 110])
return line,line2 # 可以同时画两个或多个线,只要在update函数中返回多个线即可
ani = animation.FuncAnimation(fig, update,len(x), fargs=[x,y1,y2,line],interval=200, blit=True)
#ani.save('index.gif') # 保存为gif图像,可在电脑工作路径找到图像文件
plt.show()
左右滑动查看更多
动图呈现
图形解读
第一,城乡居民消费价格指数总体上呈相同的变化趋势。
第二,我国农村居民CPI在2001年到2011年期间均大于城市居民CPI,表明了农村的物价变动幅度高于城市。
第三,我国城乡CPI总体变动幅度不大,处于可控范围,除1999年、2002年、2009年城乡CPI均小于100外,其余年份均大于100,总体而言,物价处于上涨状态。
►往期推荐
回复【Python】👉简单有用易上手
回复【学术前沿】👉机器学习丨大数据
回复【数据资源】👉公开数据
回复【可视化】👉你心心念念的数据呈现
回复【老姚专栏】👉老姚趣谈值得一看
►一周热文
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
审阅:简华(何年华)编辑:青酱
欢迎扫描👇二维码添加关注